package pt.iscte.daam.model;

import java.util.Collection;

import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Table(name = "Senhorio")
@Entity
public class Senhorio extends Arrendatario {
	
	public Senhorio(){
		super();
	}

	public Senhorio(Arrendatario arrendatario) {
		super();
		this.setUtilizador(arrendatario.getUtilizador());
		this.setPassword(arrendatario.getPassword());
		this.setPrimeiroNome(arrendatario.getPrimeiroNome());
		this.setUltimoNome(arrendatario.getUltimoNome());
		this.setEmail(arrendatario.getEmail());
		for(Mensagem mensagem: arrendatario.getMensagens()){
			mensagem.setArrendatario(this);
		}
		for(ClassificacaoArrendatario classificacaoArrendatario: arrendatario.getClassificacoesArrendatario()){
			classificacaoArrendatario.setUtilizador(this);
		}
	}

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = -2115004301439878018L;

	@OneToMany(mappedBy = "senhorio")
	private Collection<ClassificacaoSenhorio> classificacoesSenhorio;

	@OneToMany(mappedBy = "senhorio")
	private Collection<Imovel> imoveis;

	@OneToMany(mappedBy = "senhorio")
	private Collection<Mensagem> mensagensSenhorio;

	public void adicionaClassificacao(ClassificacaoSenhorio classificacao) {
		classificacoesSenhorio.add(classificacao);
		if (classificacao.getUtilizador() != this) {
			classificacao.setUtilizador(this);
		}
	}

	public Collection<ClassificacaoSenhorio> getClassificacoesSenhorio() {
		return classificacoesSenhorio;
	}

	public void adicionaImovel(Imovel imovel) {
		imoveis.add(imovel);
		if (imovel.getSenhorio() != this) {
			imovel.setSenhorio(this);
		}
	}

	public Collection<Imovel> getImoveis() {
		return imoveis;
	}
	
	public void adicionaMensagemSenhorio(Mensagem mensagem) {
		mensagensSenhorio.add(mensagem);
		if (mensagem.getArrendatario() != this) {
			mensagem.setArrendatario(this);
		}
	}

	public Collection<Mensagem> getMensagensSenhorio() {
		return mensagensSenhorio;
	}
}
